package m

import (
	"GameServer/Game/timer"

	"GameServer/Game/cache"
)

var (
	Cache *cache.Cache
)

type BaseM struct {
	saveStatus bool
}

func (bm *BaseM) UpdateData() {
	bm.saveStatus = true
}

func (bm *BaseM) SaveUpdateStatus() bool {
	return bm.saveStatus
}

func (bm *BaseM) SaveDataStatusUpdate() {
	bm.saveStatus = false
}

func init() {

	Cache = cache.NewCache()
	Cache.AddTable("user", 4096, NewUser)
	Cache.AddTable("lockBlock", 4096, NewLockBlock)
	Cache.AddTable("lockBlocks", 4096, NewLockBlocks)
	Cache.AddTable("union", 4096, NewUnion)
	Cache.AddTable("unionMembers", 4096, NewUnionMembers)
	Cache.AddTable("unionEnergy", 4096, NewUnionEnergy)
	Cache.AddTable("UnionRedPacket", 4096, NewUnionRedPacket)

	Cache.AddTable("shopItems", 4096, NewShopItems)
	Cache.AddTable("hideShop", 4096, NewHideShop)
	Cache.AddTable("unionBan", 4096, NewUnionBan)
	Cache.AddTable("userSet", 4096, NewUserSet)
	Cache.AddTable("userMail", 4096, NewUserMail)
	Cache.AddTable("userPet", 4096, NewUserPet)
	Cache.AddTable("userStatic", 4096, NewUserStatic)
	Cache.AddTable("cardGame", 4096, NewCardGame)
	Cache.AddTable("cardGameMulCombat", 4096, NewCardGameMulCombat)
	Cache.AddTable("userNewGuide", 4096, NewUserNewGuide)
	Cache.AddTable("testActivityRes", 4096, NewTestActivityRes)

	Cache.AddTable("layer", 4096, NewLayer)

	Cache.AddTable("foe", 4096, NewFoe)

	Cache.AddTable("adRewards", 4096, NewAdRewards)

	Cache.AddTable("heros", 4096, NewHeros)
	Cache.AddTable("hero", 4096, NewHero)
	Cache.AddTable("HeroGoodNotOwned", 4096, NewHeroGoodNotOwned)

	// Cache.AddTable("rank", 0, NewRank)
	Cache.AddTable("scryerInfoData", 4096, NewScryerInfoData)
	Cache.AddTable("userActivityProgress", 4096, NewUserActivityProgressData)
	Cache.AddTable("actActivityGroup", 4096, NewActActivityInfo)
	Cache.AddTable("userActRanks", 4096, NewActRankGroup)

	// 好友
	Cache.AddTable("userFriends", 4096, NewUserFriendsData)
	Cache.AddTable("ShareGame", 4096, NewShareGame) // 分享游戏

	// 世界Boss战 维护的表
	Cache.AddTable("MCGamer", 4096, NewMCGamer)
	Cache.AddTable("MCGroup", 4096, NewMCGroup)
	Cache.AddTable("MCActiv", 4096, NewMCActiv)
	Cache.AddTable("BSGame", 4096, NewBSGame)

	//特殊宝箱
	Cache.AddTable("userSpBoxContent", 4096, NewUserSpecialBoxContent)

	// 成就
	Cache.AddTable("UserAchiev", 4096, NewUserAchiev)
	Cache.AddTable("AchievTotal", 4096, NewAchievTotal)
	Cache.AddTable("AchievAuxiliary", 4096, NewAchievAuxiliary)

	// 有钱的
	Cache.AddTable("DailyGift", 4096, NewDailyGift)   // 每日礼包
	Cache.AddTable("ShopDiamon", 4096, NewShopDiamon) // 购买钻石
	Cache.AddTable("ActPack", 4096, NewActPack)       // 活动礼包
	Cache.AddTable("BossPack", 4096, NewBossPack)     // Boss礼包

	Cache.AddTable("UserPush", 4096, NewUserPush) // 记录玩家手机token

	// 委托任务
	Cache.AddTable("EAGamer", 4096, NewEAGamer) // 委托活动玩家
	Cache.AddTable("EAActiv", 4096, NewEAActiv) // 委托活动
	Cache.AddTable("ERActiv", 4096, NewERActiv) // 委托活动
	Cache.AddTable("ERGamer", 4096, NewERGamer) // 委托玩家排名
	Cache.AddTable("ERGroup", 4096, NewERGroup) // 委托排名小组

	// jackpot彩金
	Cache.AddTable("JGamer", 4096, NewJGamer) // 玩家
	Cache.AddTable("JActiv", 4096, NewJActiv) // 活动
	Cache.AddTable("JGroup", 4096, NewJGroup) // 小组

	// 兑换礼包
	Cache.AddTable("ExCode", 4096, NewExCode) // 兑换码
	// 新兵特训
	Cache.AddTable("RecruitTrain", 4096, NewRecruitTrain) // 兑换码

	Cache.AddTable("UserChristmasTree", 4096, NewUserChristmasTree) // 圣诞树
	Cache.AddTable("CActiv", 4096, NewCActiv)                       // 圣诞活动
	Cache.AddTable("UserColloctProp", 4096, NewUserColloctProp)     // 收集道具活动

	timer.AddFunc("@every 1m", func() { // 每分钟执行一次
		Cache.Save()
	})

	// timer.AddFunc("0 */20 * * * *", func() {
	// 	Cache.SaveAll()
	// })

}
